/**
 * 农历数字汉字互转  数字月: 1开始,闰月+=12, eg:闰四月为16
 * @param y int|string|null 农历年  汉字时后有无'年'不影响
 * @param m int|string|null 农历月  汉字时后有无'月'不影响
 * @param d int|string|null 农历日  汉字时20+必需:`廿X`
 * @param toNum boolean 是否汉字转数字  false:数字转汉字
 * @return array [y,m,d] null参数或参数异常,值:toNum?0:''
 */
$.dateMoonNum = function(y, m, d, toNum=false){
	let CS=$.__dateMoonNum, a='', b=0, c=0, x;
	// 数字转汉字
	if(!toNum){
		if(y*1) (y+'').split('').forEach(i => a+=CS[i]);
		if(m*=1){
			if(m>12){ b='闰';  m-=12; }
			if(m===1) b+='正月'; else if(m===12) b+='腊月';
			else b = CS[m] ? CS[m]+'月' : '';
		}
		if(d*=1 && d>0 && d<31){
			if(d===20) c='二十'; else if(d===30) c='三十';
			else{
				c = d<11 ? '初' : (d<20?'十':(d<30?'廿':'三'));
				c += CS[d===10?10:d%10];
			}
		}
		return [a, b||'', c||''];
	}
	// 汉字转数字
	if(y && typeof y==='string'){
		if(y.slice(-1)==='年') y=y.slice(0,-1);
		for(let i=0,n; i<y.length; i++){
			n=CS.indexOf(y[i]);  x=n>=0&&n<10;
			if(!x){ a='0';  break; }else a+=n;
		}
	}
	if(m && typeof m==='string'){
		if(m.slice(-1)==='月') m=m.slice(0,-1);
		if(m.charAt(0)==='闰'){ b=12; m=m.slice(1); }
		if(m==='正') b+=1; else if(m==='腊'||m==='十二') b+=12;
		else{ x=CS.indexOf(m);  b=x>0?b+x:0; }
	}
	if(d && typeof d==='string' && d.length===2){
		let d1=d.charAt(0), d2=d.charAt(1);
		if(d2==='十') c=d1==='初'?10:(d1==='二'?20:(d1==='三'?30:0));
		else{
			c = d1==='初' ? 0 : (d1==='十'?10:(d1==='廿'?20:-1));
			c = c===-1 || (x=CS.indexOf(d2))<1 || x>9 ? 0 : c+x;
		}
	}
	return [a*1||0, b, c];
};
Object.defineProperty($,'__dateMoonNum',{
	value:'〇,一,二,三,四,五,六,七,八,九,十,十一'.split(','),
});
